<?php
/**
 * Created by PhpStorm.
 * User: hnh
 * Date: 2017/11/15
 * Time: 上午11:08
 */
namespace core\view;

class Base{
    //定义模板路径属性
    protected $file;
    //定义模板变量属性
    protected $var = [];

    /**
     * 加载模板
     */
    public function make($file=null){
        $this->setFile($file);//设置模板路径属性
        return $this;
    }

    /**
     * 根据调用make传入的值设置模板
     * @param $file
     */
    public function setFile($file)
    {
        if(!$file){
            return $this->file = 'app/'.MODULE.'/view/'.CONTROLLER.'/'.ACTION.'.php';
        }elseif (strpos($file,'.')){//以.分割
            $data = explode('.',$file);
        }else{
            $data = explode('/',$file);
        }
        return $this->file = $this->allotFile($data);
    }

    /**
     * 把传入的模板路径分配好
     * @param $data
     */
    public function allotFile($data)
    {
        $num = count($data);
        $file = '';
        switch ($num){
            case 1:
                $file = 'app/'.MODULE.'/view/'.CONTROLLER.'/'.$data[0].'.php';
                break;
            case 2:
                $file = 'app/'.MODULE.'/view/'.$data[0].'/'.$data[1].'.php';
                break;
            case 3:
                $file = 'app/'.$data[0].'/view/'.$data[1].'/'.$data[2].'.php';
                break;
        }
        return $file;
    }


    public function with(array $vars){
        //将获取到的变量赋值给var属性
        $this->var = $vars;
        return $this;
    }


    public function __toString()
    {
        //先处理数据,然后再引入模板
        extract($this->var); //将数组的键名变成变量名,键值变成变量值
        include $this->file;//引入模板
        return '';
    }


}